package com.ruoyi.web.sso.mapper;

import java.util.List;
import java.util.Map;

import com.ruoyi.web.sso.domain.Role;
import com.ruoyi.web.sso.domain.Staff;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

/**
 * 角色信息Mapper接口
 * 
 * @author ruoyi
 * @date 2021-10-28
 */
public interface RoleMapper
{
    /**
     * 查询角色信息
     * 
     * @param roleId 角色信息主键
     * @return 角色信息
     */
    public Role selectRoleByRoleId(String roleId);


    public Role selectRoleByAreaId(String areaId);


    @Select("SELECT r.* FROM role r    WHERE    r.area_id =  #{areaId} and   r.role_id =  #{roleId} LIMIT 1 ")
    public Role selectRoleByRoleIdAndAreaId(String roleId,String areaId);


    /**
     * 查询角色信息列表
     * 
     * @param role 角色信息
     * @return 角色信息集合
     */
    public List<Role> selectRoleList(Role role);

    /**
     * 新增角色信息
     * 
     * @param role 角色信息
     * @return 结果
     */
    public int insertRole(Role role);

    /**
     * 修改角色信息
     * 
     * @param role 角色信息
     * @return 结果
     */
    public int updateRole(Role role);

    /**
     * 删除角色信息
     * 
     * @param roleId 角色信息主键
     * @return 结果
     */
    public int deleteRoleByRoleId(String roleId);

    /**
     * 批量删除角色信息
     * 
     * @param roleIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteRoleByRoleIds(String[] roleIds);

    public int deleteByRoleIds(List<String> roleIds);

    /**
     * 查询用户分配的角色集合
     * @return
     */
    List<Map<String,Object>> staffIdByRoleList(@Param("staffId")String staffId, @Param("roleName")String roleName);


    /**
     * 获取园区一个角色id
     * @param areaId
     * @return
     */
    @Select("SELECT r.role_id FROM role r    WHERE    r.area_id =  #{areaId} LIMIT 1 ")
    String getAreaByRoleId(@Param("areaId") String areaId);


    /**
     * 获取园区一个角色id
     * @param areaId
     * @return
     */
    @Select("SELECT role_id roleId,role_name,area_id areaId FROM `role` where area_id = #{areaId} and role_name = #{roleName} and deleted = 0 ")
    Role getAreaByRoleName(@Param("areaId") String areaId,@Param("roleName") String roleName);

    @Select("select r.role_name roleName,r.role_id roleId from role r LEFT JOIN staff_role sr on r.role_id=sr.role_id where sr.staff_id=#{staffId}")
    List<Role> getRoleList(String staffId);
}
